<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>日期偏移</title>
    <script src="../../js/jquery-3.4.1.js"></script>
    <script src="../../js/moment.js"></script>
</head>
<body>

</body>
<script>

    $(() => {
        offsetYearAndMonthAndDay();
        startOrEndOfDate();
    });

    /**
     * 功能:
     *      使用add方法偏移时间.
     * 说明:
     *      1. add方法参数说明:
     *          - 第一个参数: 偏移量;
     *              1. 为负数就表示减去.
     *          - 第二个参数: 偏移的单位, 有: years, months, days, hours;
     *              1. 注意的是, 此处偏移日的单位字符串对应为-> days不是date.
     *      2. subtract方法说明: 和add方法完全一样, 但是这个方法使用来减去指定的时间的偏移量的; 和add方法的第一个参数为负数是一样的效果.
     *          - 注意的是: 如果这个方法的第一个参数为负数就表示增加.
     */
    function offsetYearAndMonthAndDay() {
        let date = moment();
        date.add(2, 'years');
        date.add(1, 'months');
        date.add(-1, 'days');
        date.subtract(1, 'days');
        date.add(2, 'hours');

        console.log(date.format('YYYY-MM-DD HH:mm:ss'));
    }

    /**
     * 功能:
     *      获取年, 月, 周, 日的起始时间.
     * 说明:
     *      1. 获取周的起始时间的时候需要注意的是默认获取的日期时从上周周日到本周的周六之间的时间, 可以使用add方法进行偏移1天.
     */
    function startOrEndOfDate() {
        let date = moment('1995-08-09 19:25:35');
        let today = moment();

        console.log(date.startOf('day').format('YYYY-MM-DD HH:mm:ss'));
        console.log(date.endOf('day').format('YYYY-MM-DD HH:mm:ss'));

        console.log(date.startOf('month').format('YYYY-MM-DD HH:mm:ss'));
        console.log(date.endOf('month').format('YYYY-MM-DD HH:mm:ss'));

        console.log('周开始:', today.startOf('week').add(1, 'days').format('YYYY-MM-DD HH:mm:ss'));
        console.log('周结束:', today.endOf('week').add(1, 'days').format('YYYY-MM-DD HH:mm:ss'));

        console.log(date.startOf('year').format('YYYY-MM-DD HH:mm:ss'));
        console.log(date.endOf('year').format('YYYY-MM-DD HH:mm:ss'));
    }

</script>
</html>